/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testescomjunit;

/**
 *
 * @author Helanio
 */
public class Trapezio {
    private int baseA;
    private int baseB;
    private int altura;
    public static final String MSG_VALOR_INVALIDO = "ERRO: valor precisa ser maior que zero.";

    public int getAltura() {
        return altura;
    }

    public void setAltura(int altura) throws AppException{
        if (verificarNumeroInteiroPositivo(altura)){
            this.altura = altura;
        }else{
            throw new AppException(MSG_VALOR_INVALIDO);
        }
    }

    public int getBaseA() {
        return baseA;
    }

    public void setBaseA(int baseA) throws AppException{
        if (verificarNumeroInteiroPositivo(baseA)){
            this.baseA = baseA;
        }else {
            throw new AppException(MSG_VALOR_INVALIDO);
        }
    }

    public int getBaseB() {
        return baseB;
    }

    public void setBaseB(int baseB) throws AppException{
        if (verificarNumeroInteiroPositivo(baseB)){
            this.baseB = baseB;
        }else{
            throw new AppException(MSG_VALOR_INVALIDO);
        }
    }
    
    
    
    public Trapezio (int baseA, int baseB, int altura) throws AppException{
        if (validarElementosTrapezio(baseA, baseB, altura)) {
            this.baseA = baseA;
            this.baseB = baseB;
            this.altura = altura;
        } else {
            throw new AppException (MSG_VALOR_INVALIDO);
        }
    }
    
    private boolean validarElementosTrapezio (int baseA, int baseB, int altura) {
        return verificarNumeroInteiroPositivo(baseA)&&
                verificarNumeroInteiroPositivo(baseB)&&
                verificarNumeroInteiroPositivo(altura);
    }
    
    private boolean verificarNumeroInteiroPositivo (int numero) {
        if (numero > 0){
            return true;
        }
        return false;
    }
    
    public int calcularArea () {
        return ((this.baseA + this.baseB)* this.altura)/2;
        
    }
    
    public int calcularPerimetro () {
        int ladoMaior = this.baseA;
        int ladoMenor = this.baseB;
        if (this.baseB > this.baseA){
            ladoMaior = this.baseB;
            ladoMenor = this.baseA;
        }
        double lado = Math.sqrt(Math.pow(this.altura, 2) + Math.pow((ladoMaior - ladoMenor), 2));
        return (int) (this.baseA + this.baseB + this.altura + lado);
        
    }
    
}